package visiopuce.ui.providers;

import java.text.SimpleDateFormat;
import java.util.List;

import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display;

import visiopuce.objets.Analyse;
import visiopuce.objets.Personne;
import visiopuce.objets.Prelevement;
import visiopuce.objets.Puce;
import visiopuce.service.PersonneServiceImpl;
import visiopuce.service.PrelevementServiceImpl;
import visiopuce.service.PuceServiceImpl;

public class ListeTravailTableLabelProvider extends ColumnLabelProvider implements IColorProvider {

	private int colindex;

	/** Constructeur privé */
	public ListeTravailTableLabelProvider(int colindex) {
		this.colindex = colindex;
	}

	
		
		
	@Override
	public String getText(Object element) {
		String result = "";
		Analyse analyse = (Analyse) element;
		Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(analyse.getPrelevement().getIdPrelevement());
		Personne personne = PersonneServiceImpl.getInstance().getPersonneById(prel.getPersonne().getIdPersonne());
		SimpleDateFormat formatDateJava = new SimpleDateFormat("dd/MM/yyyy");
		List<Puce> puces = null;
		if (analyse.getTypeAnalyse().getIdTypeAnalyse() == 3){
			puces = PuceServiceImpl.getInstance().findAllByidAnalyse(analyse.getIdAnalyse()) ;
		}

		switch (colindex) {
		case 0:

			result = personne.getNom();
			result += " " + personne.getPrenom();
			if (personne.getDateNaissance() != null) {
				result += " (né(e) le " + formatDateJava.format(personne.getDateNaissance()) + ")";
			}

			break;
		case 1:
			result = prel.getNumeroPrelevement();
			break;
		case 2: {
			if (prel.getDateReception() != null) {
				result = formatDateJava.format(prel.getDateReception());
			}
			break;
		}
		case 3:
			if (analyse.isUrgent()) {
				result = "URGENT";
				if (analyse.getRaisonUrgent() != null) {
					result += " : " + analyse.getRaisonUrgent();
				}
			}
			break;
		case 4: {
			result = "";
			if (puces != null && puces.size()>0) {
				for (Puce puce : puces) {
					if (puce.getAnnotateur() != null){
						result += puce.getAnnotateur().getNom()+" ";
					}
				}
			}
			break;
		}
		case 5: {
			result = "";
			if (puces != null && puces.size()>0) {
				for (Puce puce : puces) {
					if (puce.getSignataire() != null){
						result += puce.getSignataire().getNom()+" ";
					}
				}
			}
			break;
		}
		}
		return result.trim();
	}

	
	@Override
	public Color getBackground(Object element) {
		Color color = new Color(Display.getCurrent(), 255, 255, 255);
		Analyse analyse = (Analyse) element;
		if (analyse.isUrgent()){
			color = new Color(Display.getCurrent(), 186, 0, 255);
		}
		return color;
	}

}
